home *** CD-ROM | disk | FTP | other *** search
- /* abstree.h
- * RasMol2 Molecular Graphics
- * Roger Sayle, October 1994
- * Version 2.5
- */
-
- #define OpCode(x) (((x)->type)&0x0f)
-
- /* Operator Types */
- #define OpAnd 0x01
- #define OpOr 0x02
- #define OpNot 0x03
- #define OpEqual 0x04
- #define OpNotEq 0x05
- #define OpLess 0x06
- #define OpMore 0x07
- #define OpLessEq 0x08
- #define OpMoreEq 0x09
- #define OpConst 0x0a
- #define OpWithin 0x0b
- #define OpMember 0xac
-
- #define OpLftProp 0x10
- #define OpLftVal 0x20
- #define OpRgtProp 0x40
- #define OpRgtVal 0x80
-
- /* Property fields */
- #define PropIdent 1
- #define PropXCord 2
- #define PropYCord 3
- #define PropZCord 4
- #define PropTemp 5
- #define PropRad 6
- #define PropResId 7
- #define PropName 8
- #define PropChain 9
- #define PropResName 10
- #define PropSelect 11
- #define PropElemNo 12
-
- #define PredAbsOrd(x) ((x)-20)
- #define PredAbsChr(x) ((x)+20)
-
- #define PredAlpha 20
- #define PredAmino 21
- #define PredAT 22
- #define PredBonded 23
- #define PredCG 24
- #define PredCystine 25
- #define PredDNA 26
- #define PredHelix 27
- #define PredHetero 28
- #define PredHydrogen 29
- #define PredIon 30
- #define PredLigand 31
- #define PredMainChain 32
- #define PredNucleic 33
- #define PredProtein 34
- #define PredPurine 35
- #define PredPyrimidine 36
- #define PredRNA 37
- #define PredSelected 38 /* Unused! */
- #define PredSheet 39
- #define PredSidechain 40
- #define PredSolvent 41
- #define PredTurn 42
- #define PredWater 43
-
- #define PredAcidic 44
- #define PredAcyclic 45
- #define PredAliphatic 46
- #define PredAromatic 47
- #define PredBasic 48
- #define PredBuried 49
- #define PredCharged 50
- #define PredCyclic 51
- #define PredHydrophobic 52
- #define PredLarge 53
- #define PredMedium 54
- #define PredNeutral 55
- #define PredPolar 56
- #define PredSmall 57
- #define PredSurface 58
-
-
-
- #define SetSize 10
- typedef struct _AtomSet {
- struct _AtomSet __far *next;
- Atom __far *data[SetSize];
- int count;
- } AtomSet;
-
- typedef union {
- AtomSet __far *set;
- struct _Expr *ptr;
- Long limit;
- int val;
- } Branch;
-
- typedef struct _Expr {
- int type;
- Branch rgt;
- Branch lft;
- } Expr;
-
- /* CPK Colour Indices
- * 0 Light Grey 1 Sky Blue 2 Red 3 Yellow
- * 4 White 5 Pink 6 Golden Rod 7 Blue
- * 8 Orange 9 Dark Grey 10 Brown 11 Purple
- * 12 Deep Pink 13 Green 14 Fire Brick 15 Mid Green
- */
-
- #define MAXELEMNO 104
- typedef struct {
- char symbol[2];
- int covalrad;
- int vdwrad;
- int cpkcol;
- char *name;
- } ElemStruct;
-
- /* Structures with Implicit Hydrogens */
- #define VDWCarbon 468
- #define VDWNitrogen 375
- #define VDWOxygen 350
- #define VDWSulphur 462
-
- #ifdef ABSTREE
- ElemStruct Element[MAXELEMNO] = {
- { { ' ', ' ' }, 170, 360, 12, "" }, /* 0 */
- { { 'H', ' ' }, 80, 275, 4, "HYDROGEN" }, /* 1 */
- { { 'H', 'e' }, 400, 550, 5, "HELIUM" }, /* 2 */
- { { 'L', 'i' }, 170, 305, 14, "LITHIUM" }, /* 3 */
- { { 'B', 'e' }, 88, 157, 12, "BERYLLIUM" }, /* 4 */
- { { 'B', ' ' }, 205, 387, 13, "BORON" }, /* 5 */
- { { 'C', ' ' }, 170, 387, 0, "CARBON" }, /* 6 */
- { { 'N', ' ' }, 188, 350, 1, "NITROGEN" }, /* 7 */
- { { 'O', ' ' }, 182, 337, 2, "OXYGEN" }, /* 8 */
- { { 'F', ' ' }, 180, 325, 6, "FLUORINE" }, /* 9 */
- { { 'N', 'e' }, 280, 505, 12, "NEON" }, /* 10 */
- { { 'N', 'a' }, 243, 550, 7, "SODIUM" }, /* 11 */
- { { 'M', 'g' }, 275, 375, 15, "MAGNESIUM" }, /* 12 */
- { { 'A', 'l' }, 338, 375, 9, "ALUMINIUM" }, /* 13 */
- { { 'S', 'i' }, 300, 550, 6, "SILICON" }, /* 14 */
- { { 'P', ' ' }, 262, 470, 8, "PHOSPHORUS" }, /* 15 */
- { { 'S', ' ' }, 255, 452, 3, "SULPHUR" }, /* 16 */
- { { 'C', 'l' }, 248, 437, 13, "CHLORINE" }, /* 17 */
- { { 'A', 'r' }, 392, 692, 12, "ARGON" }, /* 18 */
- { { 'K', ' ' }, 332, 597, 12, "POTASSIUM" }, /* 19 */
- { { 'C', 'a' }, 248, 487, 9, "CALCIUM" }, /* 20 */
- { { 'S', 'c' }, 360, 330, 12, "SCANDIUM" }, /* 21 */
- { { 'T', 'i' }, 368, 487, 9, "TITANIUM" }, /* 22 */
- { { 'V', ' ' }, 332, 265, 12, "VANADIUM" }, /* 23 */
- { { 'C', 'r' }, 338, 282, 9, "CHROMIUM" }, /* 24 */
- { { 'M', 'n' }, 338, 297, 9, "MANGANESE" }, /* 25 */
- { { 'F', 'e' }, 335, 487, 8, "IRON" }, /* 26 */
- { { 'C', 'o' }, 332, 282, 12, "COBALT" }, /* 27 */
- { { 'N', 'i' }, 375, 310, 10, "NICKEL" }, /* 28 */
- { { 'C', 'u' }, 380, 287, 10, "COPPER" }, /* 29 */
- { { 'Z', 'n' }, 362, 287, 10, "ZINC" }, /* 30 */
- { { 'G', 'a' }, 305, 387, 12, "GALLIUM" }, /* 31 */
- { { 'G', 'e' }, 292, 999, 12, "GERMANIUM" }, /* 32 */ /* 1225? */
- { { 'A', 's' }, 302, 207, 12, "ARSENIC" }, /* 33 */
- { { 'S', 'e' }, 305, 225, 12, "SELENIUM" }, /* 34 */
- { { 'B', 'r' }, 302, 437, 10, "BROMINE" }, /* 35 */
- { { 'K', 'r' }, 400, 475, 12, "KRYPTON" }, /* 36 */
- { { 'R', 'b' }, 368, 662, 12, "RUBIDIUM" }, /* 37 */
- { { 'S', 'r' }, 280, 505, 12, "STRONTIUM" }, /* 38 */
- { { 'Y', ' ' }, 445, 402, 12, "YTTRIUM" }, /* 39 */
- { { 'Z', 'r' }, 390, 355, 12, "ZIRCONIUM" }, /* 40 */
- { { 'N', 'b' }, 370, 332, 12, "NIOBIUM" }, /* 41 */
- { { 'M', 'o' }, 368, 437, 12, "MOLYBDENUM" }, /* 42 */
- { { 'T', 'c' }, 338, 450, 12, "TECHNETIUM" }, /* 43 */
- { { 'R', 'u' }, 350, 300, 12, "RUTHENIUM" }, /* 44 */
- { { 'R', 'h' }, 362, 305, 12, "RHODIUM" }, /* 45 */
- { { 'P', 'd' }, 375, 360, 12, "PALLADIUM" }, /* 46 */
- { { 'A', 'g' }, 398, 387, 9, "SILVER" }, /* 47 */
- { { 'C', 'd' }, 422, 437, 12, "CADMIUM" }, /* 48 */
- { { 'I', 'n' }, 407, 362, 12, "INDIUM" }, /* 49 */
- { { 'S', 'n' }, 365, 417, 12, "TIN", }, /* 50 */
- { { 'S', 'b' }, 155, 280, 12, "ANTIMONY" }, /* 51 */
- { { 'T', 'e' }, 175, 315, 12, "TELLURIUM" }, /* 52 */
- { { 'I', ' ' }, 350, 437, 11, "IODINE" }, /* 53 */
- { { 'X', 'e' }, 425, 525, 12, "XENON" }, /* 54 */
- { { 'C', 's' }, 418, 752, 12, "CAESIUM" }, /* 55 */
- { { 'B', 'a' }, 335, 602, 8, "BARIUM" }, /* 56 */
- { { 'L', 'a' }, 255, 457, 12, "LANTHANUM" }, /* 57 */
- { { 'C', 'e' }, 258, 465, 12, "CERIUM" }, /* 58 */
- { { 'P', 'r' }, 225, 405, 12, "PRASEODYMIUM" }, /* 59 */
- { { 'N', 'd' }, 248, 447, 12, "NEODYMIUM" }, /* 60 */
- { { 'P', 'm' }, 245, 440, 12, "PROMETHIUM" }, /* 61 */
- { { 'S', 'm' }, 240, 435, 12, "SAMARIUM" }, /* 62 */
- { { 'E', 'u' }, 273, 490, 12, "EUROPIUM" }, /* 63 */
- { { 'G', 'd' }, 235, 422, 12, "GADOLINIUM" }, /* 64 */
- { { 'T', 'b' }, 230, 415, 12, "TERBIUM" }, /* 65 */
- { { 'D', 'y' }, 228, 407, 12, "DYSPROSIUM" }, /* 66 */
- { { 'H', 'o' }, 222, 402, 12, "HOLMIUM" }, /* 67 */
- { { 'E', 'r' }, 220, 397, 12, "ERBIUM" }, /* 68 */
- { { 'T', 'm' }, 218, 392, 12, "THULIUM" }, /* 69 */
- { { 'Y', 'b' }, 215, 385, 12, "YTTERBIUM" }, /* 70 */
- { { 'L', 'u' }, 212, 382, 12, "LUTETIUM" }, /* 71 */
- { { 'H', 'f' }, 195, 350, 12, "HAFNIUM" }, /* 72 */
- { { 'T', 'a' }, 170, 305, 12, "TANTALUM" }, /* 73 */
- { { 'W', ' ' }, 175, 315, 12, "TUNGSTEN" }, /* 74 */
- { { 'R', 'e' }, 180, 325, 12, "RHENIUM" }, /* 75 */
- { { 'O', 's' }, 220, 395, 12, "OSMIUM" }, /* 76 */
- { { 'I', 'r' }, 170, 305, 12, "IRIDIUM" }, /* 77 */
- { { 'P', 't' }, 325, 387, 12, "PLATINUM" }, /* 78 */
- { { 'A', 'u' }, 335, 362, 6, "GOLD" }, /* 79 */
- { { 'H', 'g' }, 275, 495, 12, "MERCURY" }, /* 80 */
- { { 'T', 'l' }, 238, 427, 12, "THALLIUM" }, /* 81 */
- { { 'P', 'b' }, 300, 540, 12, "LEAD" }, /* 82 */
- { { 'B', 'i' }, 240, 432, 12, "BISMUTH" }, /* 83 */
- { { 'P', 'o' }, 168, 302, 12, "POLONIUM" }, /* 84 */
- { { 'A', 't' }, 155, 280, 12, "ASTATINE" }, /* 85 */
- { { 'R', 'n' }, 475, 575, 12, "RADON" }, /* 86 */
- { { 'F', 'r' }, 450, 810, 12, "FRANCIUM" }, /* 87 */
- { { 'R', 'a' }, 358, 642, 12, "RADIUM" }, /* 88 */
- { { 'A', 'c' }, 295, 530, 12, "ACTINIUM" }, /* 89 */
- { { 'T', 'h' }, 255, 460, 12, "THORIUM" }, /* 90 */
- { { 'P', 'a' }, 222, 400, 12, "PROTACTINIUM" }, /* 91 */
- { { 'U', ' ' }, 242, 437, 12, "URANIUM" }, /* 92 */
- { { 'N', 'p' }, 238, 427, 12, "NEPTUNIUM" }, /* 93 */
- { { 'P', 'u' }, 232, 417, 12, "PLUTONIUM" }, /* 94 */
- { { 'A', 'm' }, 230, 415, 12, "AMERICIUM" }, /* 95 */
- { { 'C', 'm' }, 228, 412, 12, "CURIUM" }, /* 96 */
- { { 'B', 'k' }, 225, 410, 12, "BERKELIUM" }, /* 97 */
- { { 'C', 'f' }, 222, 407, 12, "CALIFORNIUM" }, /* 98 */
- { { 'E', 's' }, 220, 405, 12, "EINSTEINIUM" }, /* 99 */
- { { 'F', 'm' }, 218, 402, 12, "FERMIUM" }, /* 100 */
- { { 'M', 'd' }, 215, 400, 12, "MENDELEVIUM" }, /* 101 */
- { { 'N', 'o' }, 212, 397, 12, "NOBELIUM" }, /* 102 */
- { { 'L', 'r' }, 210, 395, 12, "LAWRENCIUM" } /* 103 */ /* Lw? */
- };
-
-
- Expr *QueryExpr;
- Chain __far *QChain;
- Group __far *QGroup;
- Atom __far *QAtom;
-
- #else
- extern ElemStruct Element[MAXELEMNO];
-
- extern Expr *QueryExpr;
- extern Chain __far *QChain;
- extern Group __far *QGroup;
- extern Atom __far *QAtom;
-
- #ifdef FUNCPROTO
- Expr *AllocateNode();
- void DeAllocateExpr( Expr* );
- int EvaluateExpr( Expr* );
- int DefineSetExpr( char*, Expr* );
- Expr *LookUpSetExpr( char* );
- AtomSet __far *BuildAtomSet( Expr* );
- void DeleteAtomSet( AtomSet __far* );
- Expr *LookUpElement( char* );
-
- int ElemVDWRadius( int );
- int GetElemNumber( Atom __far* );
- int ParsePrimitiveExpr( char** );
- void FormatLabel( Chain __far*, Group __far*, Atom __far*, char*, char* );
- void InitialiseAbstree();
- void ResetSymbolTable();
-
- #else /* non-ANSI C compiler */
- Expr *AllocateNode();
- void DeAllocateExpr();
- int EvaluateExpr();
- int DefineSetExpr();
- Expr *LookUpSetExpr();
- AtomSet __far *BuildAtomSet();
- void DeleteAtomSet();
- Expr *LookUpElement();
-
- int ElemVDWRadius();
- int GetElemNumber();
- int ParsePrimitiveExpr();
- void FormatLabel();
- void InitialiseAbstree();
- void ResetSymbolTable();
-
- #endif
- #endif
-
-